'''
多进程
    cpu多核：
        如：服务器：8c 16g 8核cpu 16g内存
          cpu同时可以做8个事情
    python多线程：
        1个进程内多多线程，是一个伪多线程
        上下文切换 一个进程内的多个线程之间切换
    假设：8c的机器 有100个任务
        多线程：占用多少核cpu---》1核
        多进程：占用多少核cpu---》8核

    数据安全？
        线程锁  GLI
            l=threading.Lock()
            l.acquire()#加锁
            l.release()#释放锁

    多进程和多线程如何选型：
        IO密集型
            磁盘i/o、网络i/o
        cpu密集型
            频繁的计算
'''
#多线程是为了提速，加锁是为了数据安全，数据不被同时改写
import threading
import time
a=1

l=threading.Lock()
def add_a1(i):
    l.acquire() #加锁
    time.sleep(1)
    print("这里是线程：",i)
    global  a
    a+=1
    l.release() #释放锁
    print("a=",a)

for i in range(5):
    t=threading.Thread(target=add_a1,args=[i,])
    t.start()